{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 203 Activation\n",
    "\n",
    "View more, visit my tutorial page: https://morvanzhou.github.io/tutorials/\n",
    "My Youtube Channel: https://www.youtube.com/user/MorvanZhou\n",
    "\n",
    "Dependencies:\n",
    "* torch: 1.0.0\n",
    "* matplotlib\n",
    "\n",
    "https://ptorch.com/docs/4/pytorch-video-activation\n",
    "\n",
    "在CNN中推荐使用`relu`，在RNN中推荐使用`ranh`。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn.functional as F # 激励函数都在这\n",
    "from torch.autograd import Variable\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Firstly generate some fake data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = torch.linspace(-5, 5, 200)  # x data (tensor), shape=(200, 1)\n",
    "x_np = x.numpy()   # numpy array for plotting"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Following are popular activation functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_relu = F.relu(x).numpy()\n",
    "y_sigmoid = torch.sigmoid(x).numpy()\n",
    "y_tanh = torch.tanh(x).numpy()\n",
    "y_softplus = F.softplus(x).numpy()\n",
    "\n",
    "# y_softmax = F.softmax(x)\n",
    "# softmax is a special kind of activation function, it is about probability\n",
    "# and will make the sum as 1."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Plot to visualize these activation function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(1, figsize=(8, 6))\n",
    "plt.subplot(221)\n",
    "plt.plot(x_np, y_relu, c='red', label='relu')\n",
    "plt.ylim((-1, 5))\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.subplot(222)\n",
    "plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')\n",
    "plt.ylim((-0.2, 1.2))\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.subplot(223)\n",
    "plt.plot(x_np, y_tanh, c='red', label='tanh')\n",
    "plt.ylim((-1.2, 1.2))\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.subplot(224)\n",
    "plt.plot(x_np, y_softplus, c='red', label='softplus')\n",
    "plt.ylim((-0.2, 6))\n",
    "plt.legend(loc='best')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
